package com.ruoyi.mall.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 积分商城订单主业务对象 mall_order
 *
 * @author ruoyi
 * @date 2025-02-19
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class MallOrderBo extends BaseEntity {

    /**
     * 积分商城订单表主键
     */
    @NotNull(message = "积分商城订单表主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 积分商城订单ID
     */
    @NotBlank(message = "积分商城订单ID不能为空", groups = { AddGroup.class, EditGroup.class })
    private String scoreMallOrderId;

    /**
     * 会员ID表主键
     */
    @NotNull(message = "会员ID表主键不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long customerId;

    /**
     * 会员名称
     */
    @NotBlank(message = "会员名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String customerName;

    /**
     * 总积分
     */
    @NotNull(message = "总积分不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long totalScoreAmount;

    /**
     * 订单商品总数
     */
    @NotNull(message = "订单商品总数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long totalAmount;

    /**
     * 支付总金额
     */
    @NotNull(message = "支付总金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long totalMoney;

    /**
     * 交易流水号
     */
    @NotBlank(message = "交易流水号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String transactionNo;

    /**
     * 汇付支付宝跳转地址
     */
    @NotBlank(message = "汇付支付宝跳转地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payUrl;

    /**
     * 支付时间
     */
    @NotNull(message = "支付时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date payTime;

    /**
     * 支付类型(0微信 1支付宝 2银行卡)
     */
    @NotNull(message = "支付类型(0微信 1支付宝 2银行卡)不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long payType;

    /**
     * 状态(0未支付 1已支付 2已退款 3已取消 4未完成 5  已完成)
     */
    @NotNull(message = "状态(0未支付 1已支付 2已退款 3已取消 4未完成 5  已完成)不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long status;

    /**
     * 删除标志(0：未删除 1：已删除)
     */
    @NotNull(message = "删除标志(0：未删除 1：已删除)不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long yn;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
